local stockKey = KEYS[1]         -- 优惠券库存 Key
local userLimitKey = KEYS[2]     -- 用户领取记录 Key
local userId = ARGV[1]           -- 用户 ID
local limit = tonumber(ARGV[2])  -- 限领次数
local requestCount = tonumber(ARGV[3])  -- 本次请求领取的数量

-- 获取当前用户已领取次数
local userCount = tonumber(redis.call("GET", userLimitKey) or "0")

-- 判断是否超出领取限制
if userCount + requestCount > limit then
    return -1  -- 领取失败，超出限领数量
end

-- 获取库存
local stock = tonumber(redis.call("GET", stockKey) or "0")
if stock < requestCount then
    return 0  -- 库存不足
end

-- 扣减库存
redis.call("DECRBY", stockKey, requestCount)
-- 更新用户领取次数
redis.call("INCRBY", userLimitKey, requestCount)

return 1  -- 领取成功